Immersive computer-based virtual environments are popular today and are used in a wide variety of applications, including in training and gaming applications. A virtual environment usually features a computer-generated two- or three-dimensional landscape that represents an actual or imaginary location in a past, present, or future time. A user is represented in a virtual environment via a graphical representation that is commonly referred to as an avatar. The user can manipulate the avatar in the virtual environment via a client application that executes on a processing device, such as a computer. The user can direct the avatars to roam the landscape and interact with other users' avatars and with other computer-controlled objects. Avatars and other entities in the virtual environment are referred to as virtual objects.
There are several different architectures that may be used to implement a virtual environment. One type of virtual environment is owned and controlled by a single entity, such as a company, which provides host computers that implement the virtual environment. The company also provides a proprietary client application to users who wish to participate in the virtual environment. The proprietary client application typically runs on hardware provided by the respective user. Each host computer in the virtual environment controls and manages a respective region in the virtual environment. A client application connects to a particular host computer over a network when the user begins to participate in the virtual environment. The client application provides data to the host computer that describes the movements of the avatar that is being manipulated by the user. The client application also renders the virtual environment on a display device for the user. The host computer provides an event stream of event data to the client applications describing activities and state changes of virtual objects that occur within a volume about the respective avatar, sometimes referred to as an area of interest. The client applications use the event stream to continually update the display device for the user so the user is aware of changes occurring within the area of interest of the avatar. The content virtual objects that make up the scenery of the landscape of the virtual environment and that are rendered for the user are typically provided to the client applications during an installation process prior to the user's participation in the virtual environment.
The bandwidth required by the event stream differs depending on the level of activity occurring within the area of interest of the avatar. An event stream may require significant bandwidth to identify all the activity occurring during a battle between two large groups of virtual objects, for example, but may require minimal bandwidth to identify the activity occurring in the virtual environment if the avatar is alone in a forest. If the bandwidth required by the event stream exceeds the bandwidth of a communications path between the client application and the host computer sending the event stream, event data latency may increase to a point that lag results. Lag manifests itself as jerky or non-uniform movement of virtual objects in the virtual environment and is undesirable to a user of the virtual environment.
Another type of virtual environment architecture is a distributed virtual environment, where each separate region of the distributed virtual environment may be provided by a host computer that is owned and operated by a separate entity. In a distributed virtual environment, each host computer manages and controls a respective region of the distributed virtual environment. The owner of the host computer may change the landscape of the region arbitrarily, and may connect to or disconnect from the distributed virtual environment unpredictably. Consequently, it may be impractical or impossible to provide content virtual objects that make up the scenery associated with the landscape of the various regions to the client applications in advance of participation by the user in the distributed virtual environment. Instead, such content virtual objects are typically provided to the client applications in a content stream during participation in the distributed virtual environment. Because scenery may be graphics intensive, the content stream may require significant bandwidth. Therefore, the content stream may compete with the event stream for bandwidth of the communications path between the respective client application and the host computer, increasing event data latency and resulting in lag. Thus, there is a need for mechanisms to coordinate a content stream in view of an event stream to reduce or prevent lag in a distributed virtual environment.